% Die Funktion erstellt eine Matrix, in der alle Bilder des Ortners "img"
% als Spaltenvektoren enthalten sind. Diese Spaltenvektoren koennen durch
% die Funktion viewcolumns wieder hergestellt werden.
function [test_faces] = create_faces

    % Dateiname in den die matrix gespeichert werden soll
    filename = 'faces.mat';

    % Wichtig ist, dass alle Dateien im Unterordner "img" Bilddateien sind und
    % alle die selbe hoehe bzw. breite haben.
    D = dir('img/subject*.*'); % Einlesen aller Dateien im Ordner "img"
    
    % Check and save number of images in folder "img"
    imagecount = size(D, 1);
    
    % Check and save image dimensions (Die ersten beiden Elemente sind "."
    % und ".." und werden ausgelassen)
    [height width] = size(imread(['img/' D(1).name]));
    
    % Initialisieren der imgx * imgy matrix, die alle images aus "img" in
    % Spaltenvektoren beinhaltet.
    A = zeros(height * width, imagecount-7);

    % Jedes Bild wird eingelesen und in einem Spaltenvektor der Matrix
    % gespeichert
    for i = 1 : imagecount-7 
        % Einlesen des Bildes
        img = imread(['img/' D(i).name]); 
        
        % Das Bild ist eine height * width matrix und wird in einen
        % Spaltenvektor gepresst. Dafuer wird die reshape Funktion
        % verwendet.
        A(:,i) = reshape(img, height * width, 1); 
    end

    disp('Results of create_faces function');
    disp('================================');
    disp(['Number of images in Matrix: ' num2str(imagecount)]);
    disp(['Image height = ' num2str(height)]);
    disp(['Image width = ' num2str(width)]);

    % Wenn der Benutzer Ausgabeargumente verlangt, wird es auch angegeben,
    % ansonsten wird die Matrix als Datei gespeichert.
    if nargout > 0
        faces = A;
    else
        faces = A;
        save(filename, 'faces');
        disp(['Stored matrix to ' filename]);
    end
end